import socket

'''
创建udp的socket，不可靠
'''

# def creat_socket():
#     udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # ipv4标识，udp标识
#     # 绑定ip和端口以元组的形式
#     udp_socket.bind(("", 7788))
#     return udp_socket
#
#
# def send_msg(udp_socket):  # 发送
#     # 获取发送内容
#     dest_ip = input("请输入对方ip：")
#     # 获取端口
#     dest_port = int(input("请输入端口号："))
#     # 输入信息
#     send_data = input("请输入要发送的信息：")
#     # 发送数据，设置编码,ip地址和端口号以元组的形式
#     udp_socket.sendto(send_data.encode('utf-8'), (dest_ip, dest_port))
#
#
# def rec_msg(udp_socket):  # 接收
#     # 接收数据以元组形式（信息，（ip，端口））
#     recv_data = udp_socket.recvfrom(1024)  # 最多1024
#     print("地址：{}，信息：{}".format(str(recv_data[1]), recv_data[0].decode('utf-8')))
#
#
# def main():
#     udp_socket = creat_socket()
#     send_msg(udp_socket)
#     rec_msg(udp_socket)
#
#
# if __name__ == '__main__':
#     main()

'''
创建tcp的socket，可靠传输，严格区分客户端和服务器
'''


# 客户端实现
# def creat_tsocket():
#     # 创建socket
#     tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#     return tcp_socket
#
#
# def connect_sever(tcp_socket):
#     # 输入地址
#     sever_ip = input("请输入ip：")
#     sever_port = int(input("请输入端口："))
#     sever_addr = (sever_ip, sever_port)
#     # 连接服务器
#     tcp_socket.connect(sever_addr)
#
#
# def send_msg(tcp_socket):
#     # 输入要发送的数据
#     send_data = input('请输入要发送的信息：')
#     tcp_socket.send(send_data.encode('utf-8'))
#
#
# def recv_msg(tcp_socket):
#     # 接收数据
#     recv_data = tcp_socket.recv(1024)
#     # 写入文件
#     with open('a.txt', 'wb') as f:
#         f.write(recv_data)
#
#
# def main():
#     tcp_socket = creat_tsocket()
#     connect_sever(tcp_socket)
#     send_msg(tcp_socket)
#     recv_msg(tcp_socket)
#     # 关闭socket
#     tcp_socket.close()
#
#
# if __name__ == '__main__':
#     main()

# 服务器
# def main():
#     # 创建socket
#     tcp_sever_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#     # 绑定本地信息
#     tcp_sever_socket.bind(('', 7788))
#     # 设置监听,时间
#     tcp_sever_socket.listen(128)
#     # 循环为多个客户端服务
#     while True:
#         # 等待连接,accept返回一个元组(客户端socket，客户端地址)
#         client_socket, client_addr = tcp_sever_socket.accept()
#         # 为一个客户端服务到结束
#         while True:
#             rec_data = client_socket.recv(1024)  # 接收数据
#             # 判断服务是否结束，如果不结束rec_data不为空，如果客户端关闭socket，则结束为空
#             if not rec_data:
#                 break
#             else:
#                 with open('aa.txt', 'wb') as f:  # 写入文件
#                     f.write(rec_data)
#         # 关闭socket
#         client_socket.close()
#     tcp_sever_socket.close()
#
#
# if __name__ == '__main__':
#     main()
